module iTimer.util.Byte ;

import iTimer.Types;

struct Atomic(T) {
	T v;
	
	T load() {
		return atomicLoad(v);	
	}
	
	void store(T _v){
		atomicStore(v, _v);	
	}
	
	void inc(){
		atomicAdd(v, 1);
	}
	
	void dec(){
		atomicAdd(v,  -1);
	}
}


version(BigEndian) {
	ushort htons (ushort x) {
		return x;
	}
	uint htonl (uint x){
		return x;
	}
} else  {
	import tango.core.BitManip ;
	ushort htons (ushort x) {
		return cast(ushort) ((x >> 8) | (x << 8));
	}
	uint htonl (uint x){
		return bswap(x);
	}
}
